﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

using Controller;


namespace Controller
{ 

    public class DBFacade
    {
        // Jim
        protected string SERVERNAME = "195.181.8.199";
        protected string USER = "gruppe3";
        protected string PASSWORD = "re8udRe68A";
        protected string DATABASE = "gruppe3";

        private SqlConnection conn;
        //private SqlDataReader rdr;
        private SqlCommand cmd;

        private Produktionssystem produktionssystem;

        
        public DBFacade(Produktionssystem produktionssystem)
        {
            this.produktionssystem = produktionssystem;
            
            string connectionStr = connectionStr = ("Server=" + SERVERNAME + ";DataBase='" + DATABASE + "';User ID='" + USER + "';Password='" + PASSWORD + "'");         

                conn = new SqlConnection(connectionStr);
                
                // Skab forbindelses-objekt udfra conn string
                cmd = new SqlCommand();
                cmd.Connection = conn;
                cmd.CommandType = CommandType.StoredProcedure;
        }

        //AØ   ////////////////// IMPLEMENTERING AF SQL - STORED PROCEDURES ////////////////////////////////////////
        public bool OpretRaavare(int raavarenr, string betegnelse, double kilo, string location, double minbeholdning)
        {
            double indkoebspris = 0.0;

            cmd.CommandText = "OpretRaavare";

            cmd.Parameters.Clear();

            // Sæt vardier ind i parametrene
            SqlParameter par = new SqlParameter("@raavarenr", SqlDbType.Int);
            par.Value = raavarenr;
            cmd.Parameters.Add(par);

            par = new SqlParameter("@betegnelse", SqlDbType.NVarChar);
            par.Value = betegnelse;
            cmd.Parameters.Add(par);

            par = new SqlParameter("@kilo", SqlDbType.Float);
            par.Value = kilo;
            cmd.Parameters.Add(par);

            par = new SqlParameter("@indkoebspris", SqlDbType.Float);
            par.Value = indkoebspris;
            cmd.Parameters.Add(par);
            
            par = new SqlParameter("@location", SqlDbType.NVarChar);
            par.Value = location;
            cmd.Parameters.Add(par);

            par = new SqlParameter("@minbeholdning", SqlDbType.Float);
            par.Value = minbeholdning;
            cmd.Parameters.Add(par);

            try
            {
                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
            }
            catch
            {
                if (conn.State == ConnectionState.Open)
                    conn.Close();
                return false;
            }
            return true;
        }


        ////////////////////////////////////////OPRETTER FÆRDIGVARE//////////////////////////////////////////////////
        public bool OpretFaerdigvare(int varenr, string betegnelse, double kilo, double indkoebspris, string location, int raavarenr)
        {


            cmd.CommandText = "OpretFaerdigvare";

            cmd.Parameters.Clear();

            // Sæt vardier ind i parametrene
            SqlParameter par = new SqlParameter("@varenr", SqlDbType.Int);
            par.Value = varenr;
            cmd.Parameters.Add(par);

            par = new SqlParameter("@betegnelse", SqlDbType.NVarChar);
            par.Value = betegnelse;
            cmd.Parameters.Add(par);

            par = new SqlParameter("@kilo", SqlDbType.Float);
            par.Value = kilo;
            cmd.Parameters.Add(par);

            par = new SqlParameter("@indkoebspris", SqlDbType.Float);
            par.Value = indkoebspris;
            cmd.Parameters.Add(par);


            par = new SqlParameter("@location", SqlDbType.NVarChar);
            par.Value = location;
            cmd.Parameters.Add(par);

            par = new SqlParameter("@raavarenr", SqlDbType.Int);
            par.Value = raavarenr;
            cmd.Parameters.Add(par);

            try
            {
                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
            }
            catch
            {
                if (conn.State == ConnectionState.Open)
                    conn.Close();
                return false;
            }
            return true;
        }


        // AØ
        public bool OpretIndkoebsordre(DateTime leveringsdato)
        {
            cmd.CommandText = "OpretIndkoebsordre";

            cmd.Parameters.Clear();

            // Sæt vardier ind i parametrene
            SqlParameter par = new SqlParameter("@leveringsdato", SqlDbType.Date);
            par.Value = leveringsdato;
            cmd.Parameters.Add(par);

            try
            {
                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
            }
            catch
            {
                if (conn.State == ConnectionState.Open)
                    conn.Close();
                return false;
            }
            return true;
        }

        //MADS - REGISTRER ORDRELINIER I DB
        public bool RegistrerOrdrelinie(int indkoebsordrenr, int raavarenr, double antalKg)
        {
            cmd.CommandText = "OpretIndkoebsordrelinie";

            cmd.Parameters.Clear();

            // Sæt vardier ind i parametrene
            SqlParameter par = new SqlParameter("@kilo", SqlDbType.Float);
            par.Value = antalKg;
            cmd.Parameters.Add(par);

            par = new SqlParameter("@raavarenr", SqlDbType.Int);
            par.Value = raavarenr;
            cmd.Parameters.Add(par);

            par = new SqlParameter("@indkoebsordrenr", SqlDbType.Int);
            par.Value = indkoebsordrenr;
            cmd.Parameters.Add(par);

            try
            {
                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
            }
            catch
            {
                if (conn.State == ConnectionState.Open)
                    conn.Close();
                return false;
            }
            return true;
        }

        // AØ
        public void IndlaesRaavarer()
        {
            SqlDataReader datareader;
            int raavarenr;
            string betegnelse;
            double kilo;
            string location;
            double minbeholdning;

            cmd.Parameters.Clear();

            cmd.CommandText = "LaesRaavarer";

            try
            {
                conn.Open();  // Åben forbindelsen til databasen
                datareader = cmd.ExecuteReader();

                // Gennemløb datareader (result set)
                while (datareader.Read() == true)
                {
                    raavarenr = (int)datareader["raavarenr"];
                    betegnelse = (string)datareader["betegnelse"];
                    kilo = (double)datareader["kilo"];
                    location = (string)datareader["location"];
                    minbeholdning = (double)datareader["minbeholdning"];

                    produktionssystem.OpretRaavareModel(raavarenr, betegnelse, kilo, location, minbeholdning);    // Opret varen i modellen
                }

                conn.Close();             // Luk forbindelsen
            }
            catch (SqlException ex)
            {
                if (conn.State == ConnectionState.Open)          // Luk forbindelsen
                    conn.Close();
                throw ex;
            }
        }

        //JIM
        public void findMangelvarer(String query)
        {

            SqlDataReader datareader;
            
            cmd.CommandText = query;
            cmd.Parameters.Clear();

            try
            {
                conn.Open();
                datareader = cmd.ExecuteReader();
                while (datareader.Read() == true)
                {
                    if (query == "Mangelvarer")
                        produktionssystem.opretMangelVare((int)datareader["raavarenr"], (string)datareader["betegnelse"], (double)datareader["kilo"], (string)datareader["location"], (double)datareader["indkoebspris"]);
                    else produktionssystem.TilfoejFaerdigvare((int)datareader["varenr"], (string)datareader["betegnelse"], (double)datareader["kilo"], (double)datareader["indkoebspris"], (string)datareader["location"], (int)datareader["raavarenr"]);
                       
                }
                conn.Close();
            }
            catch
            {
                if (conn.State == ConnectionState.Open)
                conn.Close();    
            }
            datareader = null;
            
        }

        //JIM 
        public void HentAlleSalgsOrdre()
        {

            SqlDataReader datareader;

            cmd.CommandText = "HentAlleSalgsOrdre";
            cmd.Parameters.Clear();

            try
            {
                conn.Open();
                datareader = cmd.ExecuteReader();
                while (datareader.Read() == true)
                {
                    produktionssystem.TilfoejOrdre((DateTime)datareader["leveringsdato"], (DateTime)datareader["dato"], (bool)datareader["klar"]); 
                }
                conn.Close();
            }
            catch
            {
                if (conn.State == ConnectionState.Open)
                    conn.Close();
            }
            datareader = null;
        }


        //MADS JESPER - MODTAG FÆRDIGVARER SOM ER I OVERSKUD
        public List<Object> findFaerdigvarer2()
        {
            SqlDataReader datareader;
            List<Object> mVarer = new List<Object>();
            mVarer.Clear();
            cmd.CommandText = "Mangelvarer";
            cmd.Parameters.Clear();

            try
            {
                conn.Open();
                datareader = cmd.ExecuteReader();
                while (datareader.Read() == true)
                {
                    mVarer.Add((int)datareader["raavarenr"]);
                    mVarer.Add((string)datareader["betegnelse"]);
                }
                conn.Close();
            }
            catch
            {
                if (conn.State == ConnectionState.Open)
                    conn.Close();
                return null;
            }
            datareader = null;
            return mVarer;
        }

        // AØ FINDNYTORDRENUMMER
        public int FindNytOrdrenummer()
        {
            SqlDataReader datareader;
            int raavarenr;
            int sidsteordrenr = 0;

            cmd.Parameters.Clear();

            cmd.CommandText = "LaesIndkoebsordrer";

            try
            {
                conn.Open(); // Åben forbindelsen til databasen
                datareader = cmd.ExecuteReader();

                // Gennemløb datareader (result set)
                while (datareader.Read() == true)
                {
                    raavarenr = (int)datareader["indkoebsordrenr"];
                    if(raavarenr > sidsteordrenr)
                    sidsteordrenr = raavarenr;
                }
                conn.Close();             // Luk forbindelsen
            }

            catch (SqlException ex)
            {
                if (conn.State == ConnectionState.Open)          // Luk forbindelsen
                    conn.Close();
                throw ex;
            }
            return sidsteordrenr;
        }

        // AØ JUSTERRAAVAREKILO
        public bool JusterRaavareKilo(int raavarenr, double antalKg)
        {
            cmd.CommandText = "JusterRaavareKilo";

            cmd.Parameters.Clear();

            // Sæt vardier ind i parametrene
            SqlParameter par = new SqlParameter("@raavarenr", SqlDbType.Int);
            par.Value = raavarenr;
            cmd.Parameters.Add(par);

            par = new SqlParameter("@ændring", SqlDbType.Float);
            par.Value = antalKg;
            cmd.Parameters.Add(par);

            try
            {
                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
            }
            catch
            {
                if (conn.State == ConnectionState.Open)
                    conn.Close();
                return false;
            }

            return true;
        }

        // AØ - Operationer på Salgsordrer /////////////////////////////////

        // AØ - REGISTRERSALGSORDRELINIE
        public bool RegistrerSalgsOrdrelinie(int ordrenr, int varenr, int raavarenr, double kilo)
        {
            cmd.CommandText = "RegistrerSalgsOrdrelinie";

            cmd.Parameters.Clear();

            // Sæt vardier ind i parametrene
            SqlParameter par = new SqlParameter("@ordrenr", SqlDbType.Int);
            par.Value = ordrenr;
            cmd.Parameters.Add(par);

            par = new SqlParameter("@varenr", SqlDbType.Int);
            par.Value = varenr;
            cmd.Parameters.Add(par);

            par = new SqlParameter("@raavarenr", SqlDbType.Int);
            par.Value = raavarenr;
            cmd.Parameters.Add(par);

            par = new SqlParameter("@kilo", SqlDbType.Float);
            par.Value = kilo;
            cmd.Parameters.Add(par);

            try
            {
                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
            }
            catch
            {
                if (conn.State == ConnectionState.Open)
                    conn.Close();
                return false;
            }
            return true;
        }

        // AØ - NEDJUSTERRAAVAREKG
        public bool NedjusterRaavarekg(double antalKg, int raavarenr)
        {
            cmd.CommandText = "NedjusterRaavarekg";

            cmd.Parameters.Clear();

            // Sæt vardier ind i parametrene
            SqlParameter par = new SqlParameter("@raavarenr", SqlDbType.Int);
            par.Value = raavarenr;
            cmd.Parameters.Add(par);

            par = new SqlParameter("@antalKg", SqlDbType.Float);
            par.Value = antalKg;
            cmd.Parameters.Add(par);

            try
            {
                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
            }
            catch
            {
                if (conn.State == ConnectionState.Open)
                    conn.Close();
                return false;
            }

            return true;
        }

        // AØ - FINDNYTORDRENRSALG
        public int FindNytOrdreNrSalg()
        {
            SqlDataReader datareader;
            int varenr;
            int sidsteordrenr = 0;

            cmd.Parameters.Clear();

            cmd.CommandText = "FindNytOrdreNrSalg";

            try
            {
                conn.Open();             // Åben forbindelsen til databasen
                datareader = cmd.ExecuteReader();

                // Gennemløb datareader (result set)
                while (datareader.Read() == true)
                {
                    varenr = (int)datareader["ordreid"];
                    if (varenr > sidsteordrenr)
                    sidsteordrenr = varenr;
                }

                conn.Close();             // Luk forbindelsen
            }
            catch (SqlException ex)
            {
                if (conn.State == ConnectionState.Open)          // Luk forbindelsen
                    conn.Close();
                throw ex;
            }
            return sidsteordrenr;
        }
        
       // AØ - OPRETSALGSORDRE
        public bool OpretSalgsOrdre(int kundenr, DateTime dato,DateTime leveringsdato,bool ordreklar)
        {
            cmd.CommandText = "OpretSalgsOrdre";

            cmd.Parameters.Clear();

            // Sæt vardier ind i parametrene
            SqlParameter par = new SqlParameter("@kundenr", SqlDbType.Int);
            par.Value = kundenr;
            cmd.Parameters.Add(par);

            par = new SqlParameter("@dato", SqlDbType.Date);
            par.Value = dato;
            cmd.Parameters.Add(par);

            par = new SqlParameter("@leveringsdato", SqlDbType.Date);
            par.Value = leveringsdato;
            cmd.Parameters.Add(par);

            par = new SqlParameter("@ordreklar", SqlDbType.Bit);
            par.Value = ordreklar;
            cmd.Parameters.Add(par);

            try
            {
                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
            }
            catch
            {
                if (conn.State == ConnectionState.Open)
                    conn.Close();
                return false;
            }
            return true;
        }

        
        //Mads indlæser færdigvarer til dropdown menuen
        public void IndlaesFaerdigVare()
        {
            SqlDataReader datareader;
            int varenr;
            string betegnelse;
            double kilo;
            double indkoebspris;
            string location;
            int raavarenr;

            cmd.Parameters.Clear();

            cmd.CommandText = "LaesFaerdigvarer";

            try
            {
                conn.Open();             // Åben forbindelsen til databasen
                datareader = cmd.ExecuteReader();

                // Gennemløb datareader (result set)
                while (datareader.Read() == true)
                {
                    varenr = (int)datareader["varenr"];
                    betegnelse = (string)datareader["betegnelse"];
                    kilo = (double)datareader["kilo"];
                    indkoebspris = (double)datareader["indkoebspris"];
                    location = (string)datareader["location"];
                    raavarenr = (int)datareader["raavarenr"];

                    produktionssystem.OpretFaerdigvareModel(varenr, betegnelse, kilo, indkoebspris, location, raavarenr);    // Opret varen i modellen
                }

                conn.Close();             // Luk forbindelsen
            }
            catch (SqlException ex)
            {
                if (conn.State == ConnectionState.Open)          // Luk forbindelsen
                    conn.Close();
                throw ex;
            }
        }

        // AØ - Find råvarenr på færdigvaren
        public int FindRaavareFraFaerdigvare(int varenr)
        {
            int raavarenr = 0;
            int laestvarenummer;
            SqlDataReader datareader;

            cmd.Parameters.Clear();

            cmd.CommandText = "FindRaavareFraFaerdigvare";

            try
            {
                conn.Open();             // Åben forbindelsen til databasen
                datareader = cmd.ExecuteReader();

                // Gennemløb datareader (result set)
                while (datareader.Read() == true)
                {
                    laestvarenummer = (int)datareader["varenr"];
                    if (varenr == laestvarenummer)
                    {
                        raavarenr = (int)datareader["raavarenr"];
                    }

                }

                conn.Close();             // Luk forbindelsen
            }
            catch (SqlException ex)
            {
                if (conn.State == ConnectionState.Open)          // Luk forbindelsen
                    conn.Close();
                throw ex;
            }

            return raavarenr;
        }

        //MADS - Henter laveste salgsordrelinie id fra salgsordrelinietiltavle tabellen
        public int HentLavesteSalgsOrdreLinieID()
        {

            
            SqlDataReader datareader;
            int lavestesalgsordre = 0;

            cmd.Parameters.Clear();

            cmd.CommandText = "HentLavesteSalgsordreId";

            try
            {
                conn.Open();             // Åben forbindelsen til databasen
                datareader = cmd.ExecuteReader();
                // Gennemløb datareader (result set)
                while (datareader.Read() == true)
                {

                    try
                    {
                        lavestesalgsordre = (int)datareader["Laveste"];
                    }
                    catch (Exception)
                    {

                        lavestesalgsordre = -1;
                    }
                        
                    
                  
                }

                conn.Close();             // Luk forbindelsen
                
            }
            catch (SqlException ex)
            {
                if (conn.State == ConnectionState.Open)          // Luk forbindelsen
                    conn.Close();
                throw ex;
                
            }
            return lavestesalgsordre;

        }

        //MADS - Henter objekter fra salgsordrelinietiltavle tabellen
        public List<Object> HentOrdrelinieIDogTavleID(int SalgsOrdreLinieID)
        {
            SqlDataReader datareader;
            List<Object> SalgsOrdreLinierTilTavle = new List<Object>();
            SalgsOrdreLinierTilTavle.Clear();
            cmd.Parameters.Clear();
            cmd.CommandText = "LaesAlleSalgsOrdrelinieTilTavle";
            

            //Her sendes parameteren med over i databasen
            SqlParameter par = new SqlParameter("@SalgsOrdrelinieId", SqlDbType.Int);
            par.Value = SalgsOrdreLinieID;
            cmd.Parameters.Add(par);

            try
            {
                conn.Open();
                datareader = cmd.ExecuteReader();
                while (datareader.Read() == true)
                {
                    SalgsOrdreLinierTilTavle.Add((int)datareader["SalgsOrdrelinieId"]);
                    SalgsOrdreLinierTilTavle.Add((int)datareader["TavleId"]);

                }
                conn.Close();
            }
            catch
            {
                if (conn.State == ConnectionState.Open)
                    conn.Close();
                return null;
            }
            datareader = null;
            return SalgsOrdreLinierTilTavle;

        }


        //MADS
        #region MetoderTilOprettelseAfProduktionsLinie_Objekter

        //MADS - henter salgsordre ud fra salgsordrenr til tavlelisterne
        public String[] HentSalgsOrdreLinie(int salgsordrelinieID)
        {
            SqlDataReader datareader;
            int salgsordrelinieid = salgsordrelinieID;
            int ordreid = 0;
            int varenr = 0;
            int raavarenr = 0;
            double kilo = 0;

            cmd.Parameters.Clear();

            cmd.CommandText = "HentSalgsOrdreLinie";

            //Her sendes parameteren med over i databasen
            SqlParameter par = new SqlParameter("@SalgsOrdrelinieId", SqlDbType.Int);
            par.Value = salgsordrelinieid;
            cmd.Parameters.Add(par);


            try
            {
                conn.Open();             // Åben forbindelsen til databasen
                datareader = cmd.ExecuteReader();

                // Gennemløb datareader (result set)
                while (datareader.Read() == true)
                {
                    ordreid = (int)datareader["ordreid"];
                    varenr = (int)datareader["varenr"];
                    raavarenr = (int)datareader["raavarenr"];
                    kilo = (double)datareader["kilo"];
                }

                conn.Close();             // Luk forbindelsen

            }
            catch (SqlException ex)
            {
                if (conn.State == ConnectionState.Open)          // Luk forbindelsen
                    conn.Close();
                throw ex;
            }
            String[] Salgsordrelinie = new String[] {Convert.ToString( salgsordrelinieid), Convert.ToString( ordreid), Convert.ToString( varenr), Convert.ToString( raavarenr), Convert.ToString( kilo)};
            return Salgsordrelinie;
        }

        //MADS - henter varebetegnelse ud fra varenr
        public string HentVareBet(int varenr)
        {
            SqlDataReader datareader;
            int varenummer = varenr;
            string varebet = null;
            cmd.Parameters.Clear();

            cmd.CommandText = "HentVareBet";

            //Her sendes parameteren med over i databasen
            SqlParameter par = new SqlParameter("@varenr", SqlDbType.Int);
            par.Value = varenummer;
            cmd.Parameters.Add(par);


            try
            {
                conn.Open();             // Åben forbindelsen til databasen
                datareader = cmd.ExecuteReader();

                // Gennemløb datareader (result set)
                while (datareader.Read() == true)
                {
                    varebet = (string)datareader["betegnelse"];
                }

                conn.Close();             // Luk forbindelsen
            }
            catch (SqlException ex)
            {
                if (conn.State == ConnectionState.Open)          // Luk forbindelsen
                    conn.Close();
                throw ex;
            }
            return varebet;

        }

        //MADS - henter raavarebetegnelse og location ud fra raavarenr
        public String[] HentRaavareBet(int raavarenr)
        {
            SqlDataReader datareader;
            int raavarenummer = raavarenr;
            string raavarebet = null;
            string location = null;
            cmd.Parameters.Clear();

            cmd.CommandText = "HentRaavareBetegnelseOgLocation";

            //Her sendes parameteren med over i databasen
            SqlParameter par = new SqlParameter("@raavarenr", SqlDbType.Int);
            par.Value = raavarenummer;
            cmd.Parameters.Add(par);


            try
            {
                conn.Open();             // Åben forbindelsen til databasen
                datareader = cmd.ExecuteReader();

                // Gennemløb datareader (result set)
                while (datareader.Read() == true)
                {
                    raavarebet = (string)datareader["betegnelse"];
                    location = (string)datareader["location"];
                }

                conn.Close();             // Luk forbindelsen

            }
            catch (SqlException ex)
            {
                if (conn.State == ConnectionState.Open)          // Luk forbindelsen
                    conn.Close();
                throw ex;
            }
            String[] Raavareinfo = new String[] { raavarebet, location };
            return Raavareinfo;

        }


        //MADS - henter leveringsdato ud fra odreid nr
        public DateTime HentLevDat(int ordreid)
        {
            SqlDataReader datareader;
            int ordrenummer = ordreid;
            DateTime levDat = DateTime.Now;
            cmd.Parameters.Clear();

            cmd.CommandText = "HentLeveringsDato";

            //Her sendes parameteren med over i databasen
            SqlParameter par = new SqlParameter("@ordreid", SqlDbType.Int);
            par.Value = ordrenummer;
            cmd.Parameters.Add(par);


            try
            {
                conn.Open();             // Åben forbindelsen til databasen
                datareader = cmd.ExecuteReader();

                // Gennemløb datareader (result set)
                while (datareader.Read() == true)
                {
                    levDat = (DateTime)datareader["leveringsdato"];
                }

                conn.Close();             // Luk forbindelsen

            }
            catch (SqlException ex)
            {
                if (conn.State == ConnectionState.Open)          // Luk forbindelsen
                    conn.Close();
                throw ex;
            }
            return levDat;

        }

        # endregion
        

        public DateTime HenLevDato()
        {
            DateTime Temp = DateTime.Now;
            return Temp;
        }


        //MADS - HENTER NYESTE SALGSORDRELINIEID
        public int HentNyesteSalgsOrdreLinieId()
        {
            SqlDataReader datareader;
            int nyestesalgsordrelinieid = 0;

            cmd.Parameters.Clear();

            cmd.CommandText = "HentNyesteSalgsOrdreLinieId";

            try
            {
                conn.Open();             // Åben forbindelsen til databasen
                datareader = cmd.ExecuteReader();

                // Gennemløb datareader (result set)
                while (datareader.Read() == true)
                {
                    nyestesalgsordrelinieid = (int)datareader["stoerste"];
                }

                conn.Close();             // Luk forbindelsen

            }
            catch (SqlException ex)
            {
                if (conn.State == ConnectionState.Open)          // Luk forbindelsen
                    conn.Close();
                throw ex;
            }
            return nyestesalgsordrelinieid;
        }

        //MADS - REGISTRER SALGSORDRELINIER TIL REGSALGSTILTAVLER TABELLEN
        public void RegistrerTilTavler(int salgsordrelinieid, int tavleid)
        {

            cmd.CommandText = "RegistrerSalgsOrdreLinieTilTavle";

            cmd.Parameters.Clear();

            // Sæt vardier ind i parametrene
            SqlParameter par = new SqlParameter("@SalgsOrdrelinieId", SqlDbType.Int);
            par.Value = salgsordrelinieid ;
            cmd.Parameters.Add(par);

            par = new SqlParameter("@TavleId", SqlDbType.Int);
            par.Value = tavleid;
            cmd.Parameters.Add(par);

            try
            {
                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
            }
            catch
            {
                if (conn.State == ConnectionState.Open)
                    conn.Close();
            }            
        }

        //JESPER - SLET RÅVARE!!
        public bool SletVare(int raavareNr)
        {
            cmd.CommandText = "SletRaavare";

            cmd.Parameters.Clear();

            // Sæt værdier i parametre
            SqlParameter par = new SqlParameter("@raavarenr", SqlDbType.Int);
            par.Value = raavareNr;
            cmd.Parameters.Add(par);

            try
            {
                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
            }
            catch
            {
                if (conn.State == ConnectionState.Open)
                    conn.Close();
                return false;
            }

            return true;
            }

        // AØ - Slet ordrelinie ved færdigmeldelse
        public void SletLinie(int salgsordrelinieId, int tavleid)
        {
            cmd.CommandText = "SletLinie";

            cmd.Parameters.Clear();

            // Sæt værdier i parametre
            SqlParameter par = new SqlParameter("@salgsordrelinieid", SqlDbType.Int);
            par.Value = salgsordrelinieId;
            cmd.Parameters.Add(par);

            par = new SqlParameter("@tavleid", SqlDbType.Int);
            par.Value = tavleid;
            cmd.Parameters.Add(par);

            try
            {
                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
            }
            catch
            {
                if (conn.State == ConnectionState.Open)
                    conn.Close();
            }
        }

        // AØ og Jesper - færdigmeldelse endelig
        public void AendreLinieStatus(int salgsordrelinieId, int tavleid)
        {
            cmd.CommandText = "SlutTavleId";

            cmd.Parameters.Clear();

            // Sæt værdier i parametre
            SqlParameter par = new SqlParameter("@salgsordrelinieid", SqlDbType.Int);
            par.Value = salgsordrelinieId;
            cmd.Parameters.Add(par);

            par = new SqlParameter("@tavleid", SqlDbType.Int);
            par.Value = tavleid;
            cmd.Parameters.Add(par);

            try
            {
                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
            }
            catch
            {
                if (conn.State == ConnectionState.Open)
                    conn.Close();
            }
        }
    }
}
